package com.hzw.saas.api.product;

import java.util.List;

import com.hzw.saas.api.product.dto.UserProductDto;
import com.hzw.saas.api.product.dto.UserProductInfoDto;

/**
 * <p>
 * 用户产品关联表 服务类
 * </p>
 *
 * @author zzl
 * @since 2021-02-21
 */
public interface IUserProductService {

    UserProductDto getUserProduct(String userId, String productId);

    /**
     * 统计用户已订阅/未订阅产品
     *
     * @param userId    用户ID
     * @param subStatus 订阅状态，0-未订阅，1-已订阅
     * @return 已订阅产品数量
     */
    int countUserProduct(String userId, Integer subStatus);

    /**
     * 获取用户产品列表
     *
     * @param userId 用户ID
     * @param subStatus 用户订阅产品状态，0：未订阅，1：已订阅，-1：获取所有状态的产品
     * @param cloudType 产品云类型 0-所有类型 1-软件云，2-工具云，3-算力云，4-数据云
     * @return
     */
    List<UserProductInfoDto> listUserProductInfo(String userId, Integer subStatus, Integer cloudType);

    /**
     * 订阅/取消订阅
     *
     * @param userProductDto
     * @return
     */
    UserProductDto subscribe(UserProductDto userProductDto);

    /**
     * 删除订阅信息
     *
     * @param userId
     * @param productId
     * @return
     */
    UserProductDto delete(String userId, String productId);

}
